package utils;
import persistencia.*;
import persistencia.dominio.*;

import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManager;
import javax.jdo.PersistenceManagerFactory;
import javax.jdo.Transaction;
import java.util.*;

import javax.jdo.Extent;
import javax.jdo.Query;
import utils.IniFile;
import comun.constantes.*;

import java.io.*;
import server.Singleton;
import server.actividades.ControlActividades;
import server.aula.ControlAula;
import server.calendario.ControlCalendario;
import server.comunicacion.ControlComunicacion;
import server.datosPersonales.ControlDatosPersonales;
import server.foro.ControlForo;
import server.inscripcionOnLine.ControlInscripcionOnLine;
import server.login.ControlLogin;
import server.material.ControlMaterial;
import server.organizacion.ControlOrganizacion;

import java.sql.*;

import javax.swing.*;
import comun.*;
import java.util.Map;

public class PruebaConsultas {

  public PruebaConsultas() {
  }

  private static Vector obtenerCursosDeLasOrganizaciones(Vector organizaciones, Vector aulas, Long idPersona, ControlOrganizacion controlOrganizacion) throws Exception {
		Vector cursos = null;	
		Enumeration enum = organizaciones.elements();
		while (enum.hasMoreElements()) {
			Organizacion organizacion = (Organizacion) enum.nextElement();
			if(controlOrganizacion.getParticipante(organizacion.getId(), idPersona)!=null)
				aulas.add(organizacion);
			cursos = controlOrganizacion.getAulasOrganizacionUsuario(organizacion.getId(),idPersona, false);
			aulas.addAll(cursos);
		}		
		return aulas;
  }
 
  public static void main(String[] args){
    Persistencia persistencia = null;
    Connection conexionSQL = null;
    try {
      persistencia = new Persistencia();
      persistencia.crearTransaccion();
      conexionSQL = DriverManager.getConnection(Singleton.url,Singleton.userName,Singleton.password);
      //conexionSQL.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
      conexionSQL.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
      /*Vamos cambiando orden de la pregunta: 1,2,3,4,5 y el valor de la calificacion; Excelente, Muy Bien, Bien, Regular y Mal
      String filtro = "preguntaSiat.orden == "+4;
      filtro += " & valorCalificacion.nombre==\""+"Mal"+"\"";
	  Vector consulta = persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.RespuestaPreguntaSiat",filtro);
	  System.out.println(consulta.size());
	  System.out.println("Calculo de Porcentaje: "+(consulta.size()*100)/2331);*/
	  
	  /*Para Consultar las respuestas dadas en la pregunta 5 (Observaciones)
	  System.out.println("----------------------------------------------------------");
	  int i = 1;
	  for (Iterator iter = consulta.iterator(); iter.hasNext();) {
		  RespuestaPreguntaSiat element = (RespuestaPreguntaSiat) iter.next();
		  if(element.getDetalle()!= null && element.getDetalle().compareTo("")!=0 && element.getDetalle().compareTo(".....")!=0){	
			  System.out.println(i +") "+element.getDetalle() +"-"+ element.getEncuestaSiatPersona().getPersona().getId());
			  i++;
		  }
	  }
	  System.out.println("----------------------------------------------------------");*/	  
 
	  /*int cont = 1;
      while(cont < 20){
	      System.out.println("===========================Tanda: "+cont+"================================================");
	      Vector participantes = persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.Participante","tipoUsuario.nombre","aula.id=="+"2761945554"+" & tipoUsuario.nombre!=\""+comun.constantes.TIPO_USUARIOS.ALUMNO+"\"");
	      int i = 1;
	      for (Iterator iter = participantes.iterator(); iter.hasNext();) {
			Participante element = (Participante) iter.next();
			System.out.println(i+") "+element.getPersona().getNombreYApellido());
			i++;
	      }
	      cont++;
      } */   
	  
      /*//Alumnos Activos en 1er cuatrimestre 2009
      String parametros = "java.sql.Timestamp fechaInicioCuatrimestre, java.sql.Timestamp fechaFinCuatrimestre";
      String filtroFecha = " & fechaUltimoAcceso >= fechaInicioCuatrimestre & fechaUltimoAcceso <= fechaFinCuatrimestre";
      Timestamp fechaInicioCuatrimestre = utils.Utils.fechaInicioMes(1);  
      Timestamp fechaFinCuatrimestre = utils.Utils.hoySqlDate();
      
      String filtro = "";
      filtro += "tipoUsuario.nombre!=\""+TIPO_USUARIOS.ALUMNO+"\"";
      Vector consulta = persistencia.getObjectosPorClase("persistencia.dominio.Participante"
    		  ,"fechaUltimoAcceso descending",filtro+filtroFecha,"", parametros,fechaInicioCuatrimestre,fechaFinCuatrimestre,null);
      System.out.println(consulta.size());
      
      Vector consultaSinEntrar = persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.Participante",filtro);
      System.out.println("Total, con los que no entraron nunca: "+consultaSinEntrar.size());
      Vector sinEntrar = new Vector();
	  for (Iterator iter = consultaSinEntrar.iterator(); iter.hasNext();) {
		  Participante element = (Participante) iter.next();
		  if(element.getPersona()!=null)
			  if(!UtilsObjetosDominio.contenido(element.getPersona(),sinEntrar))
				  sinEntrar.add(element.getPersona());
	  }     
	  System.out.println("Total, con los que no entraron nunca - sin repetidos: "+sinEntrar.size());
	  
	  Vector sinRepetidos = new Vector();
	  for (Iterator iter = consulta.iterator(); iter.hasNext();) {
		  Participante element = (Participante) iter.next();
		  if(!UtilsObjetosDominio.contenido(element.getPersona(),sinRepetidos))sinRepetidos.add(element.getPersona());
	  }  
	  //Porcentaje de alumnos que vieron la encuesta
	  //System.out.println("Calculo de Porcentaje: "+(2331*100)/consulta.size());
	  System.out.println("----------------------------------------------------------");
	  int i = 1;
	  for (Iterator iter = sinRepetidos.iterator(); iter.hasNext();) {
		  Persona element = (Persona) iter.next();
		  System.out.println(i +") "+element.getId() +"-"+element.getNumeroDoc() +"-"+ element.getNombreYApellido());
		  i++;
	  }
	  System.out.println("----------------------------------------------------------");*/

	  persistencia.commit();
    }catch (Exception ex){
      ex.printStackTrace();
      persistencia.rollback();
    }
    return;
  }
}